// ==UserScript==
// @name			Wechat Admin Keep Online
// @namespace		http://0xcoder.com
// @version			0.12
// @description		自动刷新网面，防止公众号/小程序后台掉线
// @author			Legolas
// @match			https://mp.weixin.qq.com/*
// @icon			https://gitee.com/athelas/tampermonkey_script/raw/master/icon/wechat.ico
// @run-at			document-end
// @grant			GM_xmlhttpRequest
// @require			https://code.jquery.com/jquery-1.12.4.min.js
// @updateURL		https://gitee.com/athelas/tampermonkey_script/raw/master/WechatAdminKeepOnline.js
// ==/UserScript==


(function() {
	'use strict';

	// 刷新倒计时（秒）
	var remain_second = 300;

	// 页面增加刷新倒计时提示
	var countdown_notice = '' +
		'<div class="countdown_notice">' +
			'为防止登录状态失效，每' + Math.floor(remain_second/60) + '分钟将自动刷新一次页面。<br />' +
			'请及时保存正在编辑的内容，或手动暂停自动刷新。 刷新倒计时：' +
			'<span id="remain_second">' + remain_second + '</span>' +
			'<span id="act" data-status="1">暂停</span>'
		'</div>' +
		'<div class="float_fix"></div>';
	$('body').prepend(countdown_notice);


	// 倒计时提示样式
	var countdown_stylesheet = '' +
		'<style>' +
		'.countdown_notice{' + '\n\t' +
			'font-size: 14px;' + '\n\t' +
			'position: fixed;' + '\n\t' +
			'left: 200px;' + '\n\t' +
			'z-index: 2000;' + '\n\t' +
			'height: 50px;' + '\n\t' +
			'padding: 3px 10px;' + '\n\t' +
			'background-color: #fff;' + '\n\t' +
			'border: 1px solid #ccc;' + '\n\t' +
			'border-top: none;' + '\n\t' +
			'border-radius: 0 0 4px 4px;' + '\n\t' +
			'box-shadow: 0 0 1px #ccc;' + '\n' +
		'}' + '\n' +
		'.float_fix{' + '\n\t' +
			'height: 1px;' + '\n\t' +
			'margin-bottom: 50px;' + '\n' +
		'}' + '\n' +
		'#act{' + '\n\t' +
			'color: #07c160;' + '\n' +
			'padding-left: 10px;' + '\n\t' +
			'text-decoration: underline;' + '\n\t' +
			'cursor: pointer;' + '\r' +
		'}' + '\n' +
		'#act:hover{' + '\n\t' +
			'color: #07c160;' + '\n' +
		'}';
	$('body').prepend(countdown_stylesheet);


	// 倒计时
	function countdown_start()
	{
		var _countdown = setInterval(
			function()
			{
				--remain_second;
				if(remain_second <= 0)
				{
					window.location.reload();
				}
				$('#remain_second').text(remain_second);
			},
			1000
		);
		return _countdown;
	}
	var _countdown = countdown_start();


	// 监听倒计时暂停按钮被点击
	$('#act').click(
		function(){
			var status = $('#act').attr('data-status');
			status = parseInt(status);
			var new_status = '';
			var new_text = '';
			switch(status)
			{
				case 0:
					new_status = 1;
					new_text = '暂停';
					_countdown = countdown_start();
					break;
				case 1:
					new_status = 0;
					new_text = '继续';
					clearInterval(_countdown);
					break;
			}
            $('#act').attr('data-status', new_status);
			$('#act').text(new_text);
		}
	);


})();
